JavaScript

RegExp[@@species] アクセサー プロパティ

 編集:2022.08.22 by T.A.

[Edge]。→

RegExp コンストラクターを返します。

構文
RegExp[Symbol.species]

クラス内で:

get [Symbol.species]() {}
解説

species アクセサー プロパティは、RegExp の既定のコンストラクターを返します。サブクラスのコンストラクターは、コンストラクターの割り当てをオーバーライドするためにこれを使用することができます。

既定のコンストラクターを返します。RegExp オブジェクトであれば、RegExp コンストラクターを返します。

D=RegExp[Symbol.species]; //=[function]:function RegExp() { [native code] }
派生オブジェクトの species

派生クラスのコレクション オブジェクト(たとえば、独自の正規表現を表す 以下のMyRegExp)では、MyRegExp の species は MyRegExp コンストラクターです。しかし、派生クラスのメソッドで親である RegExp オブジェクトを返すようにこれをオーバーライドしたくなるかもしれません。

class MyRegExp extends RegExp {
  // MyRegExp の species を親である RegExp コンストラクタにオーバーライドします。
  static get [Symbol.species]() { return RegExp; }
}
D=new MyRegExp(); //=[object]:/(?:)/
D=new MyRegExp('abc', 'gi'); //=[object]:/abc/gi
D=new RegExp();   //=[object]:/(?:)/

テスト